package main

import (
	"fmt"
)

// 定义接口
type A interface {
	one()
	two()
}

type AI struct {
	name string
}

/*
 实现接口的方式就是绑定接口的方法
 此处有区别！
 1） 当创建的结构体用当前结构体来接受的话就不用全部实现接口的方法
 2）当结构体用实现的接口来接收的话必须实现所所有的接口的方法
*/
func (ai AI) one() {
	fmt.Println("AI.one()")
}
func (ai AI) two() {
	fmt.Println("AI.one()")
}

type Q interface {
	W
	E
}
type W interface {
	w()
}
type E interface {
	e()
}

type QWE struct {
}

func (qwe QWE) w() {
	fmt.Println("QWE.w()")
}

func (qwe QWE) e() {
	fmt.Println("QWE.e()")
}

func main() {
	var ai A = AI{}
	ai.one()

	var qwe Q = QWE{}
	qwe.w()

}
